package org.example.service.imp;

import org.apache.ibatis.session.SqlSession;
import org.example.bean.UserBean;
import org.example.mapper.IUserMapper;
import org.example.service.IUserService;

import java.util.List;

public class UserServiceImp extends BaseService implements IUserService{

    @Override
    public UserBean login(String userName, String password) {
        SqlSession session = this.getSession();
        IUserMapper mapper = session.getMapper(IUserMapper.class);
        UserBean userBean = mapper.login(userName,password);
        session.close();
        return userBean;
    }

    @Override
    public List<UserBean> findAll() {
        SqlSession session = this.getSession();
        IUserMapper mapper = session.getMapper(IUserMapper.class);
        List<UserBean> list = mapper.findAll();
        session.close();
        return list;
    }

    @Override
    public boolean add(UserBean user) {
        SqlSession session = this.getSession();
        IUserMapper mapper = session.getMapper(IUserMapper.class);
        UserBean userBean = mapper.findByUserName(user.getUserName());
        if (userBean == null){
            mapper.add(user);
            session.commit();
            session.close();
            return true;
        }
            session.close();
            return false;
    }

    @Override
    public void del(Integer userID) {
        SqlSession session = this.getSession();
        IUserMapper mapper = session.getMapper(IUserMapper.class);
        mapper.del(userID);
        session.commit();
        session.close();
    }

    @Override
    public UserBean findByID(Integer userID) {
        SqlSession session = this.getSession();
        IUserMapper mapper = session.getMapper(IUserMapper.class);
        UserBean userBean = mapper.findByID(userID);
        session.commit();
        session.close();
        return userBean;
    }

    @Override
    public void updateGrade(Integer userID, String newGrade) {
        SqlSession session = this.getSession();
        IUserMapper mapper = session.getMapper(IUserMapper.class);
        mapper.updateGrade(userID,newGrade);
        session.commit();
        session.close();
    }

    @Override
    public void updatePassword(Integer userID, String newPassword) {
        SqlSession session = this.getSession();
        IUserMapper mapper = session.getMapper(IUserMapper.class);
        mapper.updatePassword(userID,newPassword);
        session.commit();
        session.close();
    }
}
